package com.yunkeji.system.service;

import cn.hutool.core.lang.tree.Tree;
import com.yunkeji.dao.domain.broker.BrokerMenu;
import com.yunkeji.dao.domain.sys.SysMenu;
import com.yunkeji.dao.vo.RouterVo;

import java.util.List;

/**
 * 推广菜单 业务层
 *
 * @author 雷擎宇
 */
public interface IBrokerMenuService {

    /**
     * 根据用户查询系统菜单列表
     *
     * @param userId 用户ID
     * @return 菜单列表
     */
    List<BrokerMenu> selectMenuList(Long userId);

    /**
     * 根据用户查询系统菜单列表
     *
     * @return 菜单列表
     */
    List<BrokerMenu> selectMenuList();

    /**
     * 构建前端路由所需要的菜单
     *
     * @param menus 菜单列表
     * @return 路由列表
     */
    List<RouterVo> buildMenus(List<BrokerMenu> menus);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param menus 菜单列表
     * @return 下拉树结构列表
     */
    List<Tree<Long>> buildMenuTreeSelect(List<SysMenu> menus);


    /**
     * 新增保存菜单信息
     *
     * @param menu 菜单信息
     * @return 结果
     */
    int insertMenu(BrokerMenu menu);

    /**
     * 修改保存菜单信息
     *
     * @param menu 菜单信息
     * @return 结果
     */
    int updateMenu(BrokerMenu menu);

    /**
     * 删除菜单管理信息
     *
     * @param menuId 菜单ID
     * @return 结果
     */
    int deleteMenuById(Long menuId);

}
